﻿using FlyingEye.EntityFrameworkCore;
using FlyingEye.Monitors.Models;
using FlyingEye.Monitors.Repositories;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;

namespace FlyingEye.Repositories
{
    public class DeviceClientRepository
        : EfCoreRepository<MonitorServiceDbContext, DeviceClientModel, Guid>,
        IDeviceClientRepository
    {
        public DeviceClientRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class ReadStringValueTaskRepository :
        EfCoreRepository<MonitorServiceDbContext, ReadStringValueTaskModel, Guid>,
        IReadStringValueTaskRepository
    {
        public ReadStringValueTaskRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class ReadNumericValueTaskRepository :
        EfCoreRepository<MonitorServiceDbContext, ReadNumericValueTaskModel, Guid>,
        IReadNumericValueTaskRepository
    {
        public ReadNumericValueTaskRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class StringValueMonitorClientRepository :
        EfCoreRepository<MonitorServiceDbContext, StringValueMonitorClientModel, Guid>,
        IStringValueMonitorClientRepository
    {
        public StringValueMonitorClientRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class StringValueMonitorGroupRepository :
        EfCoreRepository<MonitorServiceDbContext, StringValueMonitorGroupModel, Guid>,
        IStringValueMonitorGroupRepository
    {
        public StringValueMonitorGroupRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class NumericValueMonitorClientRepository :
        EfCoreRepository<MonitorServiceDbContext, NumericValueMonitorClientModel, Guid>,
        INumericValueMonitorClientRepository
    {
        public NumericValueMonitorClientRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }

    public class NumericValueMonitorGroupRepository :
        EfCoreRepository<MonitorServiceDbContext, NumericValueMonitorGroupModel, Guid>,
        INumericValueMonitorGroupRepository
    {
        public NumericValueMonitorGroupRepository(IDbContextProvider<MonitorServiceDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }
    }
}
